home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / src.arc / PKTDRVR.H < prev    next >
C/C++ Source or Header  |  1989-08-19  |  3KB  |  91 lines

  1. #ifndef    CL_ETHERNET
  2.  
  3. #define    PK_MAX    3    /* Add extra interrupt hooks if you increase this */
  4.  
  5. /* Packet driver interface classes */
  6. #define    CL_ETHERNET    1
  7. #define    CL_PRONET-10    2
  8. #define    CL_IEEE8025    3
  9. #define    CL_OMNINET    4
  10. #define    CL_APPLETALK    5
  11. #define    CL_SERIAL_LINE    6
  12. #define    CL_STARLAN    7
  13. #define    CL_ARCNET    8
  14. #define    CL_AX25        9
  15. #define    CL_KISS        10
  16. #define    NCLASS        11
  17.  
  18. /* Packet driver interface types (not a complete list) */
  19. #define    TC500        1
  20. #define    PC2000        10
  21. #define    WD8003        14
  22. #define    PC8250        15
  23. #define    ANYTYPE        0xffff
  24.  
  25. /* Packet driver function call numbers. From Appendix B. */
  26. #define    DRIVER_INFO        1
  27. #define    ACCESS_TYPE        2
  28. #define    RELEASE_TYPE        3
  29. #define    SEND_PKT        4
  30. #define    TERMINATE        5
  31. #define    GET_ADDRESS        6
  32. #define    RESET_INTERFACE        7
  33. #define    SET_RCV_MODE        20
  34. #define    GET_RCV_MODE        21
  35. #define    SET_MULTICAST_LIST    22
  36. #define    GET_MULTICAST_LIST    23
  37. #define    GET_STATISTICS        24
  38.  
  39. /* Packet driver error return codes. From Appendix C. */
  40.  
  41. #define    NO_ERROR    0
  42. #define    BAD_HANDLE    1    /* invalid handle number */
  43. #define    NO_CLASS    2    /* no interfaces of specified class found */
  44. #define    NO_TYPE        3    /* no interfaces of specified type found */
  45. #define    NO_NUMBER    4    /* no interfaces of specified number found */
  46. #define    BAD_TYPE    5    /* bad packet type specified */
  47. #define    NO_MULTICAST    6    /* this interface does not support multicast */
  48. #define    CANT_TERMINATE    7    /* this packet driver cannot terminate */
  49. #define    BAD_MODE    8    /* an invalid receiver mode was specified */
  50. #define    NO_SPACE    9    /* operation failed because of insufficient space */
  51. #define    TYPE_INUSE    10    /* the type had previously been accessed, and not released */
  52. #define    BAD_COMMAND    11    /* the command was out of range, or not    implemented */
  53. #define    CANT_SEND    12    /* the packet couldn't be sent (usually    hardware error) */
  54.  
  55. typedef union {
  56.     struct {
  57.         unsigned char lo;
  58.         unsigned char hi;
  59.     } byte;
  60.     unsigned short word;
  61. } ureg;
  62.  
  63. #define    CARRY_FLAG    0x1
  64.  
  65. struct pktdrvr {
  66.     int class;    /* Interface class (ether/slip/etc) */
  67.     int intno;    /* Interrupt vector */
  68.     short handle1;    /* Driver handle(s) */
  69.     short handle2;
  70.     struct mbuf *buffer;    /* Currently allocated rx buffer */
  71.     struct mbuf *rcvq;    /* Receive queue */
  72.     struct iface *iface;
  73. };
  74.  
  75. extern struct pktdrvr Pktdrvr[];
  76.  
  77. #define    PKT_SIG    "PKT DRVR"    /* Packet driver signature */
  78.  
  79. /* In pktdrvr.c: */
  80. void pkint __ARGS((unsigned short dev,unsigned short di,unsigned short si,
  81.     unsigned short bp,unsigned short dx,unsigned short cx,
  82.     unsigned short bx,unsigned short ax,unsigned short ds,
  83.     unsigned short es));
  84.  
  85. /* In pkvec.asm: */
  86. INTERRUPT pkvec0 __ARGS((void));
  87. INTERRUPT pkvec1 __ARGS((void));
  88. INTERRUPT pkvec2 __ARGS((void));
  89.  
  90. #endif    /* CL_ETHERNET */
  91.